ADC/DAC 频谱仿真(PSD)
用 Transient +(正确采样)+ FFT/DFT 得到可用于 SNR / ENOB / THD / SFDR / IMD 的稳定、可复现频谱。
0. 必备概念
- 记录长度与分辨率:
-
泄漏的根因:FFT 默认把截取到的 N 点当作“周期性重复”,若边界不连续(非整周期),能量会扩散(leakage)。
-
两条路线:
1. 采样方案
1.1 用“输出采样点”而不是“仿真内部步长”做 FFT
- 做频谱时,最怕“波形窗口显示点是插值点”。建议用 Spectre strobe 让保存点严格落在 FFT 采样栅格上,从源头消除插值误差。(Cadence Community)
- strobe 相关:
skipstart/skipstop/strobedelay/strobeperiod都在 transient 语句/选项中配置。(Cadence Community)
结论:FFT 采样频率 = 1/strobeperiod(或等价 Outstep),且必须稳定等间隔。
1.2 相干采样
相干条件:记录窗口里有 整数个输入周期。常用写法:
其中 N 为 FFT 点数(通常 2 的幂),M 为记录内的周期数(整数)。(瑞萨电子)
工程选型规则:
快速配频步骤:
- 定 N(例如 4096/8192/65536)
- 根据目标频段选一个候选
- 把 M 调到附近的 奇数/素数
- 最终
(输入源也要用这个值)
若能做到相干采样:优先矩形窗(或不加窗),谱最“干净”。(模拟器件)
1.3 加窗采样
做不到精确相干(如 PLL/噪声/异步时钟等)就加窗。(模拟器件)
窗函数速选:
- Hann:通用(泄漏抑制与分辨率折中)。(圣荷西州立大学)
- Flat Top:幅度精度优先(代价是主瓣更宽、噪底更高)。(圣荷西州立大学)
- Rectangular(不加窗):只适合相干采样或噪声/随机分析特定场景。(圣荷西州立大学)
必须记住的两件事:
- 窗会改变幅度,需要按 **coherent gain(窗增益)**做幅度修正;例如 Hann 的 coherent gain 约为 0.5。(圣荷西州立大学)
- 计算噪声功率/PSD 时,要用窗的 等效噪声带宽 ENBW 做修正,否则噪声会偏差。(圣荷西州立大学)
1.4 时钟抖动
采样/重建时钟抖动对 SNR 的上限影响(常用近似):
频率越高,SNR 上限越差。(模拟器件)
2. Virtuoso/Spectre 仿真设置
2.1 Transient(统一 ADC/DAC 的通用设置)
可以在
Transient Options→Output→Strobe中设置新版本支持
Tran→Transient Noise→Fourier Analysis Settings中快捷设置
建议用 strobe 采样点做 FFT:
skipstart:跳过启动/锁定阶段(例如丢掉前 10~100 个周期)skipstop:采样窗口结束时间strobeperiod = 1/f_s:FFT 的等间隔采样周期- 这样保存的数据点就是 FFT 所需点,且避免插值误差。(Cadence Community)
求解精度:
- 做 FFT 时不建议用 maxstep“强行构造输出栅格”;优先用 strobe。maxstep 仅用于必要的数值精度/捕捉快速边沿微调。(Cadence Community)
3. FFT/DFT 操作流程
3.1 数据准备
- 只取稳态窗口:用 skipstart/skipstop 或在波形上裁剪
- 去直流(可选):
- 若非相干:选 Hann/FlatTop 等窗,并记得做窗增益/ENBW修正(圣荷西州立大学)
3.2 FFT 结果如何“正确读功率”
- 信号功率:对主峰做“主瓣积分”,而不是只读单个 bin。NI 的经验做法:围绕峰值 bin 做 ±3 bins 加和(对常见窗通常够用)。(圣荷西州立大学)
- 噪声功率:把全频带(0~fs/2)功率求和,剔除 DC、基波、谐波/互调,再按窗 ENBW 修正。(圣荷西州立大学)
4. 指标提取
建议用“功率口径”(10log)统一计算;幅度口径(20log)仅用于 dBc 标注。
- SNR:
- ENOB:
- THD(前 K 个谐波):
- SFDR:最大杂散(不含基波与指定谐波/IMD)相对基波:
- IMD3(双音):关注 (2f_1-f_2,;2f_2-f_1) 两个三阶产物的峰值/功率。
IEEE 1241 体系下的“相干采样/抑制泄漏”就是为了让这些功率归属更可靠。(课堂)
5. DAC 专属要点
5.1 ZOH(零阶保持)导致 sinc 衰减
传统 DAC(ZOH)频响幅度呈 sinc 包络,在 Nyquist 处衰减约 -3.92 dB。(维基百科)
用途:
- 做 DAC 输出幅度/THD/SFDR 对标时,明确是否包含 ZOH 衰减或是否已在数字端做 inverse-sinc 补偿。
5.2 DAC 的“采样点”选取
-
若要评估“码速
”下的离散频谱,推荐: - 用 strobeperiod = 1/fs 直接对模拟输出等间隔采样;或
- 在时钟边沿对齐采样(本质同样是以 fs 采样)。(Cadence Community)
6. 常见问题快速定位
-
主峰扩散/噪底抬升:非相干采样 + 未加窗 或 采样点来自插值
- 解决:优先相干采样;否则 Hann/FlatTop;启用 strobe 采样点(Cadence Community)
-
幅度不准:加窗后没做 coherent gain 修正,或只读单个 bin
- 解决:做窗增益修正 + 主瓣积分(圣荷西州立大学)
-
高频 SNR 明显偏差:时钟/采样抖动限制
- 解决:用抖动 SNR 公式先算“理论上限”再排查电路噪声(模拟器件)
7. Checklist
- 先定采样:
、N、(相干) ,M 选奇数/素数(瑞萨电子) - Transient 用 strobe:skipstart/skipstop + strobeperiod=1/fs,避免插值误差(Cadence Community)
- 能相干就矩形窗;不能相干就 Hann(通用)/FlatTop(幅度优先)(圣荷西州立大学)
- 功率口径:信号主瓣积分、噪声按 ENBW 修正(圣荷西州立大学)
- DAC:记得 ZOH 的 sinc 衰减(Nyquist ≈ -3.92 dB)(维基百科)
- 高频指标:先评估 jitter 限制上限(模拟器件)